import * as Cesium from "cesium";
import image1 from "@/assets/threeJs/images/buttonBac.png"
import {getAListOfAllBusinesses} from "@/api/threeJs/threeJsApi";
import FlowWall from "@/threeJs/wall/FlowWall";
import MaterialTypes from "@/threeJs/wall/MaterialTypes";

async function addCompaniesTagsWalls(viewer) {
    let CompanyWallArr = []
    let {data: data} = await getAListOfAllBusinesses()
    data.forEach((item) => {
        const arr = item.fencing.split(',').map(Number);
        viewer.entities.add({
            infoId: item.id,
            show: false,
            id: item.enterpriseName,
            name: '企业名称',
            position: Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude, 110),
            label: { // 文字标签
                text: item.enterpriseName,
                font: "24 sans-serif", // 字体大小和类型
                fillColor: Cesium.Color.WHITE, // 文字颜色
                showBackground: true, // 是否显示背景
                backgroundColor: new Cesium.Color(4 / 255, 88 / 255, 176 / 255, 0.8),
                backgroundPadding: new Cesium.Cartesian2(20, 15),   // 背景内边距（水平, 垂直）
                verticalOrigin: Cesium.VerticalOrigin.CENTER, // 垂直居中
                horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // 水平居中
                pixelOffset: new Cesium.Cartesian2(0, 0), // 微调偏移量（按需调整）
                style: Cesium.LabelStyle.FILL, // 文本样式
                minimumPixelSize: 1,  // 最小显示尺寸(像素)
                maximumScale: 1,     // 最大缩放比例
                disableDepthTestDistance: Number.POSITIVE_INFINITY, // 禁用深度测试，确保始终显示在最前
                // distanceDisplayCondition: new Cesium.DistanceDisplayCondition(
                //     0,    // 最小可见距离(米)
                //     9000 // 最大可见距离(米)
                // )
            },
        });
        let wall = new FlowWall(
            viewer,
            Cesium.Cartesian3.fromDegreesArray(arr),
            {
                wallHeight: 600,
                wallColor: Cesium.Color.RED,
                duration: 1000,
                materialType: MaterialTypes.LINEFLOW,
            },
            item.enterpriseName
        );
        wall.hide()
        CompanyWallArr.push(wall)
    })
    return CompanyWallArr
}


function displayCompaniesTags(viewer, flag, name) {
    if (flag) {
        displayCompaniesTags(viewer, false)
        if (Array.isArray(name)) {
            name.forEach((item) => {
                viewer.entities.getById(item.enterpriseName).show = true
            })
        } else {
            viewer.entities.values.forEach((item) => {
                if (item.name === '企业名称') {
                    if (item.id === name) {
                        item.show = true
                        viewer.flyTo(item,
                            {
                                duration: 2, // 飞行持续时间（秒）
                                maximumHeight: 2000, // 飞行过程中的最大高度（米）
                                offset: {
                                    heading: Cesium.Math.toRadians(0), // 航向角（弧度）
                                    pitch: Cesium.Math.toRadians(-90), // 俯仰角（弧度），-90表示从正上方看
                                    range: 1000 // 与实体的距离（米）
                                }
                            }
                        );
                    }
                }
            })
        }

    } else {
        viewer.entities.values.forEach((item) => {
            if (item.name === '企业名称') {
                item.show = false
            }
        })
    }
}

export {addCompaniesTagsWalls, displayCompaniesTags}
